package com.jc;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class PostgreSQLUpdate {
    public static void main(String[] args) {
        String url = null;
        String user = null;
        String password = null;
        int affectedRows = 0;
        String sql = "UPDATE users SET name = ? WHERE id = ?";

        // 读取数据库配置（使用类加载器，适配 Maven 项目）
        try (InputStream file = PostgreSQLUpdate.class.getClassLoader().getResourceAsStream("db.properties")) {
            if (file == null) {
                System.out.println("错误：未找到 db.properties 文件");
                return;
            }
            Properties p = new Properties();
            p.load(file);
            url = p.getProperty("url");
            user = p.getProperty("user");
            password = p.getProperty("password");
        } catch (IOException e) {
            System.out.println("配置文件读取失败：" + e.getMessage());
            return;
        }

        // 校验配置完整性
        if (url == null || user == null || password == null) {
            System.out.println("错误：数据库配置不完整（url、user、password 不能为空）");
            return;
        }

        // 注册驱动（可选，增强兼容性）
        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("错误：未找到 PostgreSQL 驱动，请检查依赖");
            return;
        }

        // 执行更新操作
        try (Connection conn = DriverManager.getConnection(url, user, password);
             PreparedStatement ps = conn.prepareStatement(sql)) {

            ps.setString(1, "tom"); // 设置 name 为 "tom"
            ps.setInt(2, 1);       // 更新 id=1 的记录

            affectedRows = ps.executeUpdate();
            System.out.println("更新成功，影响行数：" + affectedRows);

        } catch (SQLException e) {
            System.out.println("SQL 执行失败：" + e.getMessage());
            System.out.println("错误码：" + e.getErrorCode());
        }
    }
}